package com.yanyeori.mongodb.document;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import java.io.Serializable;

/**
 * bank MongoDB 文档Document
 */
@Document(collection = "bank_collection")
public class Bank implements Serializable {
    /**
     * @Id - 文档的唯一标识，在mongodb中为ObjectId，它是唯一的，通过时间戳+机器标识+进程ID+自增计数器（确保同一秒内产生的Id不会冲突）构成。
     *
     * @Document - 把一个java类声明为mongodb的文档，可以通过collection参数指定这个类对应的文档。@Document(collection=“mongodb”) mongodb对应表
     *
     * @DBRef - 声明类似于关系数据库的关联关系。ps：暂不支持级联的保存功能，当你在本实例中修改了DERef对象里面的值时，单独保存本实例并不能保存DERef引用的对象，它要另外保存，如下面例子的Person和Account。
     *
     * @Indexed - 声明该字段需要索引，建索引可以大大的提高查询效率。
     *
     * @CompoundIndex - 复合索引的声明，建复合索引可以有效地提高多字段的查询效率。
     *
     * @GeoSpatialIndexed - 声明该字段为地理信息的索引。
     *
     * @Transient - 映射忽略的字段，该字段不会保存到mongodb。
     *
     * @PersistenceConstructor - 声明构造函数，作用是把从数据库取出的数据实例化为对象。该构造函数传入的值为从DBObject中取出的数据
     */

    /**
     * id
     */
    @Id
    private Long id;

    /**
     * 银行代码
     */
    private String bankId;

    /**
     * 银行名称
     */
    private String bankName;

    /**
     * BIC
     */
    private String bic;

    /**
     * 是否注销;Active:0,Disable:1
     */
    private String status;

    /**
     * 修改人
     */
    private String updateUser;

    /**
     * 修改时间
     */
    private Long updateTime;

    private static final long serialVersionUID = 1L;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getBankId() {
        return bankId;
    }

    public void setBankId(String bankId) {
        this.bankId = bankId;
    }

    public String getBankName() {
        return bankName;
    }

    public void setBankName(String bankName) {
        this.bankName = bankName;
    }

    public String getBic() {
        return bic;
    }

    public void setBic(String bic) {
        this.bic = bic;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getUpdateUser() {
        return updateUser;
    }

    public void setUpdateUser(String updateUser) {
        this.updateUser = updateUser;
    }

    public Long getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Long updateTime) {
        this.updateTime = updateTime;
    }
}